package org.com.star.event.service.listener;

import lombok.extern.slf4j.Slf4j;
import org.com.star.event.service.event.UserEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

/**
 * 定义监听器：
 * 方式一：通过实现ApplicationListener，并将对应泛型定义为要监听的事件
 */
@Slf4j
@Service
public class EmailListener implements ApplicationListener<UserEvent> {

    /**
     * 事件被触发后，进行相关业务逻辑处理，可以加上异步注解
     * @param userEvent: 用户事件
     */
    @Async
    @Override
    public void onApplicationEvent(UserEvent userEvent) {
        log.info("发送邮件给用户：{}", userEvent.getUsername());
    }
}
